import sbt._
import sbt.Keys._

trait Dependencies {

  val macwire = Seq(
    "com.softwaremill.macwire" %% "macros" % "2.3.0" % "provided",
    "com.softwaremill.macwire" %% "macrosakka" % "2.3.0" % "provided",
    "com.softwaremill.macwire" %% "util" % "2.3.0",
    "com.softwaremill.macwire" %% "proxy" % "2.3.0"
  )

  val webjarsRequireJs = Seq(
    "org.webjars.bower" % "requirejs" % "2.3.3",
    "org.webjars.bower" % "requirejs-text" % "2.0.15"
  )

  val playSilhouette = {
    val silhouette = "5.0.3"
    Seq(
      "com.mohiva" %% "play-silhouette" % silhouette,
      "com.mohiva" %% "play-silhouette-password-bcrypt" % silhouette,
      "com.mohiva" %% "play-silhouette-crypto-jca" % silhouette,
      "com.mohiva" %% "play-silhouette-persistence" % silhouette,
      "com.mohiva" %% "play-silhouette-testkit" % silhouette % "test",
      //"net.codingwell" %% "scala-guice" % "4.1.0",
      "com.iheart" %% "ficus" % "1.4.1"
      //"com.typesafe.play" %% "play-mailer" % "6.0.0",
      //"com.typesafe.play" %% "play-mailer-guice" % "6.0.0"
    ).map(_.exclude("com.typesafe.play", "play-logback_2.12"))
  }

  val playCirce = Seq("com.dripower" %% "play-circe" % "2609.0")

  val circeVersion = "0.9.0"

  val circe = Seq(
    "io.circe" %% "circe-core",
    "io.circe" %% "circe-generic",
    "io.circe" %% "circe-parser",
    "io.circe" %% "circe-optics",
    "io.circe" %% "circe-generic-extras"
  ).map(_ % circeVersion)

  val openhtmlVersion = "0.0.1-RC11"

  val openhtmltopdf = Seq(
    "com.openhtmltopdf" % "openhtmltopdf-core" % openhtmlVersion,
  "com.openhtmltopdf" % "openhtmltopdf-pdfbox" % openhtmlVersion,
    "com.openhtmltopdf" % "openhtmltopdf-java2d" % openhtmlVersion,
    "com.openhtmltopdf" % "openhtmltopdf-rtl-support" % openhtmlVersion,
    "com.openhtmltopdf" % "openhtmltopdf-jsoup-dom-converter" % openhtmlVersion,
    "com.openhtmltopdf" % "openhtmltopdf-slf4j" % openhtmlVersion,
    "com.openhtmltopdf" % "openhtmltopdf-svg-support" % openhtmlVersion
  ).map(_.exclude("xml-apis", "xml-apis")
    .exclude("commons-logging", "commons-logging"))

  val itext = Seq(
    "com.itextpdf" % "itextpdf" % "5.5.12"
  )

  /*val poiVersion = "3.17"

  val poi = Seq(
    //poi
    "org.apache.poi" % "poi",
    "org.apache.poi" % "poi-ooxml",
    "org.apache.poi" % "poi-ooxml-schemas"
  )
  .map(_ % poiVersion exclude("stax", "stax-api")) ++:
  Seq(
    //joda-time
    "joda-time" % "joda-time" % "2.9.9",
    "org.joda" % "joda-convert" % "1.9.2"
  )*/

  val quartz = Seq("org.quartz-scheduler" % "quartz" % "2.3.0" exclude("com.zaxxer", "HikariCP-java6"))

  val slickVersion = "3.2.3"
  val slick = Seq(
    "com.typesafe.slick" %% "slick" % slickVersion,
    "com.typesafe.slick" %% "slick-codegen" % slickVersion,
    "com.typesafe.slick" %% "slick-hikaricp" % slickVersion exclude("com.zaxxer", "HikariCP-java6")
  )

  val elastic4sVersion = "6.2.4"
  val elastic4s = Seq(
    "com.sksamuel.elastic4s" %% "elastic4s-core" % elastic4sVersion,

    // for the http client
    "com.sksamuel.elastic4s" %% "elastic4s-http" % elastic4sVersion,

    // if you want to use reactive streams
    //"com.sksamuel.elastic4s" %% "elastic4s-streams" % elastic4sVersion,

    // testing
    "com.sksamuel.elastic4s" %% "elastic4s-testkit" % elastic4sVersion % "test",
    "com.sksamuel.elastic4s" %% "elastic4s-circe" % elastic4sVersion,
    "com.sksamuel.elastic4s" %% "elastic4s-embedded" % elastic4sVersion,
    "com.sksamuel.elastic4s" %% "elastic4s-sttp" % elastic4sVersion
  ).map(_.exclude("org.asynchttpclient", "async-http-client").exclude("commons-logging", "commons-logging").exclude("io.netty", "netty-all"))

}

object Dependencies extends Dependencies